#ifndef _SHOP_H_
#define _SHOP_H_
#include <iostream>
#include "Object.h"
#include <ctime>
// #include "Scene.h"

class Player;
class Shop:public VirtualObject
{
public:
    Shop(int x,int y,const std::string&name,const std::string& Symbol,Player& player):VirtualObject(x,y,name,Symbol),p(player)
    {
        
    }
    // Shop(const VirtualObject& vo,Player& player):VirtualObject(vo),p(player){};
    // Shop() = default; 
    // Shop(Player &Player):p(Player){};
    // void Generate()
    // {
    //      // 初始化一些物品
    //     items.push_back(std::make_shared<Weapon>(100, "Sword", 0, 15));
    //     items.push_back(std::make_shared<Weapon>(150, "Axe", 0, 20));
    //     items.push_back(std::make_shared<Defencer>(80, "Shield", 0, 10));
    //     items.push_back(std::make_shared<Medicine>(50, "Health Potion", 0, 25));
    // }
    void show();
    void showWeapon();
    void showDefencer();
    void showMedicine();
    // const std::vector<PropPtr>& getItems() const { return items; }
    //  // 删除特定索引的商品
    // void deleteItemAtIndex(size_t index) 
    // {
    //     if (index < items.size()) {
    //         items.erase(items.begin() + index);
    //     }
    // }
private:
    Player &p;
    // std::vector<PropPtr> items;  // 存储所有商品的容器
};
// ,Player(x,y,name,Symbol,HP,Attack,defends){money = Level = 0;}

// class Scene;
// class Player;
// class TreasureBox : public VirtualObject
// {
// public:
//     // TreasureBox(Player& p): p(p){}
//     TreasureBox(int x, int y, const std::string& name, const std::string& symbol, Shop& shop, Player& player): VirtualObject(x, y, name, symbol), p(player){}

//     void Generate()
//     {
//          // 初始化一些物品
//         items.push_back(std::make_shared<Weapon>(100, "Sword", 0, 15));
//         items.push_back(std::make_shared<Weapon>(150, "Axe", 0, 20));
//         items.push_back(std::make_shared<Defencer>(80, "Shield", 0, 10));
//         items.push_back(std::make_shared<Medicine>(50, "Health Potion", 0, 25));
//     }

//     const std::vector<PropPtr>& getItems() const { return items; }
//      // 删除特定索引的商品
//     void deleteItemAtIndex(size_t index) 
//     {
//         if (index < items.size()) {
//             items.erase(items.begin() + index);
//         }
//     }

//     void Get()
//     {
        
//         AddRandomItem();
//         RemoveFromScene();
//     }
//     void AddRandomItem()
//     {
//         int randomType = std::rand() % 4;
//         if (randomType == 0) // 生成钱
//         {   
//             int t = GenerateRandomMoney();
//             p.GetBag().Insert(std::make_shared<Prop>(t, "Money", nextNumber_++));
//             p.Setmoney(p.Getmoney() + t);
//         }
//         else // 生成随机物品
//         {   
//             for(int i = 0;i < 100;i++)
//             {
//                 if(p.GetBag().props.size() == i)
//                 {
//                     nextNumber_ = i + 1;
//                 }
//             }
//             // 生成随机索引
//             int randomIndex = std::rand() % getItems().size();
//             p.GetBag().Insert(getItems()[randomIndex]);
//             deleteItemAtIndex(randomIndex);
//         }
//     }
//     void RemoveFromScene();

//     void InitTreasureBoxes();
//     bool isOverlap(std::vector<std::shared_ptr<TreasureBox>> &treasureBoxes, int x, int y);
//     void RemoveTreasureBox(int index);
//     int GetTreasureBoxIndex(TreasureBox* t);
//     std::vector<std::shared_ptr<TreasureBox>>& GetTrea()
//     {
//         return treasureBoxes;
//     }
// private:
//     int GenerateRandomMoney() const { return std::rand() % 100 + 1; }
//     std::vector<std::shared_ptr<TreasureBox>> treasureBoxes;
//     // Shop &s;
//     Player& p;
//     // Scene& sc;
//     int nextNumber_ = 1;
//     std::vector<PropPtr> items;
// };


#endif